//
//  Structure.h
//  BabyNow
//
//  Created by 刘泽琛 on 14-3-28.
//  Copyright (c) 2014年 iMobile. All rights reserved.
//

#ifndef BabyNow_Structure_h
#define BabyNow_Structure_h

/*
 结构说明
 
 二、Group（组）说明：
 1. System：包含AppDelegate.m和AppDelegate.h两个文件和GlobalHeaders.h①。
 2. Modal②：包含所有数据模型。根据数据模型的作用功能可以构建以下子组：
 |--General：→ 与App无关的类定义（包括Categories、Protocal）
 |--Modals：   →		封装App相关的对象状态的模型数据（子类/父类），只
 包含属性及相关的getter/setter
 |--Helpers：	 →		业务逻辑处理模型
 |--General：→	与App无关的通用Helper子组，包括类似DBHelper、
 NetAccessHelper等类及相关的Categories、Protocal
 |--ServiceHelpers：→	业务帮助子组，根据业务模块划分的子组，举例
 如下：
 |--业务子组的父类（可选…）
 |--NewsHelpers：			→ 新闻帮助类
 |--SearchReporterHelpers:	→ 研究报告帮助类
 |--InvestDataHelpers：		→ 投资数据帮助类
 |--XXXXHelpers：….
 注：Service子组都与App相关
 
 3. View③：包含所有的视图类、xib文件、storyboard文件，以及自定义的Protocals、
 Categories
 |--General：	→ 与App无关的可重用的视图定义（包括Categories、Protocal、
 Classes、xib等等）
 |--Classes：	→ 只包含.h和.m类，可以根据模块再分子组（可选），举例：
 |--NewsViews：→ 新闻视图
 |--XXXXViews：….
 |--Xibs：→ 包含.xib文件和与之相关的.h和.m文件（不包括Controller），可
 以根据模块再分子组（可选）
 |--Storyboards：→ 包含.storyboard文件，不用再分子组
 注：以上的Classes、Xibs和Storyboards子组都与App相关
 
 4. Controller④：
 |--General：→ 与App无关的可重用类定义（包括Categories、Protocal）
 |--Controllers：→ 控制器类和与控制器相关的.xib文件
 |--与App相关的可以抽取的父类（可选）
 |--NewsControllers：与模块相关的控制器类
 |--XXXControllers：….
 注：以上的Classes、Xibs和Storyboards子组都与App相关
 5. Vendor：引入的第三方库（非CocoaPods管理），举例如下：
 |--ShareSDK：→	分享SDK
 |--BaiduMap：→	Baidu地图
 |--….
 6. Macro：宏定义
 |--AppMacro.h：→ 与应用程序相关的宏定义（例如页容量、缓存目录设置、
 缓存大小）
 |--UtilsMacro.h：→ 与应用程序无关的宏定义
 |--Vendors.h：  → 第三方相关的宏定义
 |--NotificationMacro.h：→ 通知相关的宏定义
 |--NetInterfaceMacro.h：→ 网络接口设置
 
 7. Resoures：
 |--imgs：	→	图片文件（建议使用images.xcassets管理）
 |--sounds：→ 声音文件
 |--configs：→ 配置文件（.plist、归档文件等等）
 |--others：→ 其他文件（可选）
 
 脚注说明：
 ①	GlobalHeaders.h：全局头文件引入（包含整个项目都用到的头文件，比如FrameWork、Macro）
 ②	数据模型：负责封装对象状态、处理业务数据、提供公共算法
 ③	视图：负责UI展示、接受用户输入
 ④	控制器：负责数据模型与视图间的通信
 
 三、命名要求：
 1. 所有与App相关的类全部加入项目缩写前缀，例如InvestChina，缩写为IC
 2. 所有与App无关，但由公司内部构建的可重用类、静态库、框架（Framework）均添加iMobile缩写（IMB）作为前缀，目的是与第三方库进行区分。
 命名冲突解决：
 1. 如果项目出现重名情况，如IC重名，则再取距离首字母最近的字母区分，例如INC（InvestChinal）,以此类推。
 2. 第三方库与项目中得类（以IMB为前缀）出现冲突的几率比较小，如果有冲突的情况，将项目中冲突类的前缀修改为ZXIMB（掌训imobile）
 */

#endif
